//
// Created by 89869 on 2022/12/28.
//

#ifndef SCREEN_TURBOSHAPE_H
#define SCREEN_TURBOSHAPE_H

#include <QPoint>
#include <QVector>
#include <QPainter>

class TurboShape
{
public:
    enum Code
    {
        emLine,
        emRect,
        emEllipse,
        emArrow,
        emMosaic
    };
    TurboShape();
    ~TurboShape();

    void setPosLeftUp(const QPoint &point);
    QPoint getPosLeftUp();

    void setPosRightDown(const QPoint &point);
    QPoint getPosRightDown();

    void setMovePoint(const QPoint &point);

    virtual void pushLinePoint(const QPoint &point){};

    void setMoveStatus(const bool &status);
    QVector<QPoint> getArrowShape();

    virtual void setMosaic(const QPixmap &map){};
    virtual QPixmap getMosaic(){ return QPixmap(); };

    virtual void paint(QPainter & painter) = 0;

protected:
    QPoint left_up_pos_;
    QPoint right_down_pos_;
    QPoint move_point_;
    bool move_status_;
};


#endif //SCREEN_TURBOSHAPE_H
